addClassLoaders{
  deploymentClassLoaders.put(topLevel,allClassLoaders);
}
removeClassLoader{
  deploymentClassLoaders.remove(topLevel);
}
create{
  return new TCCLSingleton<T>();
}
get{
  T instance=store.get(findParentModuleCl(getClassLoader()));
  if (instance == null) {
  return instance;
}
set{
  final Map<ClassLoader,T> store=new IdentityHashMap<ClassLoader,T>(this.store);
  ClassLoader classLoader=getClassLoader();
  store.put(classLoader,object);
  if (deploymentClassLoaders.containsKey(classLoader)) {
    for (    ClassLoader cl : deploymentClassLoaders.get(classLoader)) {
}
clear{
  ClassLoader classLoader=getClassLoader();
  final Map<ClassLoader,T> store=new IdentityHashMap<ClassLoader,T>(this.store);
  store.remove(classLoader);
  if (deploymentClassLoaders.containsKey(classLoader)) {
    for (    ClassLoader cl : deploymentClassLoaders.get(classLoader)) {
}
isSet{
  return store.containsKey(findParentModuleCl(getClassLoader()));
}
findParentModuleCl{
  while (c != null && !(c instanceof ModuleClassLoader)) {
    c=c.getParent();
}
getClassLoader{
  SecurityManager sm=System.getSecurityManager();
  if (sm != null) {
    return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>(){
        return Thread.currentThread().getContextClassLoader();
 else {
    return Thread.currentThread().getContextClassLoader();
}
run{
  return Thread.currentThread().getContextClassLoader();
}
